package com.wteam.dragon.model.service;

import com.wteam.dragon.model.pojo.bean.Menu;
import com.wteam.dragon.model.pojo.bean.Role;
import com.wteam.dragon.model.pojo.dto.RoleSmallDto;
import com.wteam.dragon.model.pojo.dto.UserDto;
import com.wteam.dragon.system.basebean.bean.ResultMessage;
import org.springframework.security.core.GrantedAuthority;

import java.util.List;

/**
 * @Author 陈晓辉
 * @Date 2020/4/2 9:47
 */
public interface RoleService {
    /**
     * 通过UserId获得用户的角色
     * @param userId 用户id
     * @return ResultMessage
     */
    List<RoleSmallDto> getRolesByUserId(Long userId);

    /**
     * 添加角色
     * @param role 角色对象
     * @return ResultMessage
     */
    ResultMessage addRole(Role role);

    /**
     * 删除角色
     * @param roleId 角色id
     * @return ResultMessage
     */
    ResultMessage delRole(Long roleId);

    /**
     * 更改角色
     * @param role 角色对象
     * @return ResultMessage
     */
    ResultMessage editRole(Role role);


    /**
     * 获得角色列表
     * @param roleName 角色名
     * @return ResultMessage
     */
    ResultMessage listRole(String roleName);

    /**
     * 获得角色树
     * @return ResultMessage
     */
    ResultMessage treeRole();

    /**
     * 获得角色树
     * @param menus 菜单列表集合
     * @return ResultMessage
     */
    Object treeRole(List<Menu> menus);

    /**
     * 获取用户权限信息
     * @param user 用户对象
     * @return ResultMessage
     */
    List<GrantedAuthority> mapToGrantedAuthorities(UserDto user);

    /**
     * 获得角色详细信息
     * @param id 角色id
     * @return ResultMessage
     */
    ResultMessage getRole(Long id);

    /**
     * 获得当前用户的角色信息
     * @return ResultMessage
     */
    ResultMessage getCurrentRole();
}
